From 4243baf61acf24d972eb456aea8353481af31100 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roger=20Pau=20Monn=C3=A9?= Date: Thu, 26 Nov 2015 15:51:00 +0100 Subject: [PATCH] HVM/save: allow the usage of zeroextend and a fixup function MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit With the current compat implementation in the save/restore context handling, only one compat structure is allowed, and using _zeroextend prevents the fixup function from being called. In order to allow for the compat handling layer to be able to handle different compat versions allow calling the fixup function with hvm_load_entry_zeroextend. Signed-off-by: Roger Pau Monné Reviewed-by: Andrew Cooper --- xen/include/xen/hvm/save.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/xen/include/xen/hvm/save.h b/xen/include/xen/hvm/save.h index 51bc7d5521..a9a78f9133 100644 --- a/xen/include/xen/hvm/save.h +++ b/xen/include/xen/hvm/save.h @@ -64,7 +64,12 @@ void _hvm_read_entry(struct hvm_domain_context *h, = (struct hvm_save_descriptor *)&(_h)->data[(_h)->cur]; \ if ( (r = _hvm_check_entry((_h), HVM_SAVE_CODE(_x), \ HVM_SAVE_LENGTH(_x), (_strict))) == 0 ) \ + { \ _hvm_read_entry((_h), (_dst), HVM_SAVE_LENGTH(_x)); \ + if ( HVM_SAVE_HAS_COMPAT(_x) && \ + desc->length != HVM_SAVE_LENGTH(_x) ) \ + r = HVM_SAVE_FIX_COMPAT(_x, (_dst), desc->length); \ + } \ else if (HVM_SAVE_HAS_COMPAT(_x) \ && (r = _hvm_check_entry((_h), HVM_SAVE_CODE(_x), \ HVM_SAVE_LENGTH_COMPAT(_x), (_strict))) == 0 ) { \ -- 2.30.2